1. Wstęp do CDI
2. Beans
3. Zarządzanie beanami
4. Scopes and context
5. Events
6. Interceptors
7. Decorator
1. Interceptor to programowanie aspektowe w Java EE.
Mamy możliwość wykonania czynności przed lub po wywołaniu metody.

Zobaczmy na przykład.
Najpierw musimy zdefiniować kwalifikator (Qualifier) intercepotor-a. 

  1. package pl.edu.java.cdi.managedBeans;
  2.  
  3. import static java.lang.annotation.ElementType.FIELD;
  4. import static java.lang.annotation.ElementType.METHOD;
  5. import static java.lang.annotation.ElementType.PARAMETER;
  6. import static java.lang.annotation.ElementType.TYPE;
  7. import static java.lang.annotation.RetentionPolicy.RUNTIME;
  8.  
  9. import java.lang.annotation.Retention;
  10. import java.lang.annotation.Target;
  11.  
  12. import javax.inject.Qualifier;
  13. import javax.interceptor.InterceptorBinding;
  14.  
  15. @Qualifier
  16. @InterceptorBinding
  17. @Retention(RUNTIME)
  18. @Target({TYPE, METHOD, FIELD, PARAMETER})
  19. public @interface Log {}
  1. package pl.edu.java.cdi.managedBeans;
  2.  
  3. import java.io.Serializable;
  4.  
  5. import javax.interceptor.AroundInvoke;
  6. import javax.interceptor.Interceptor;
  7. import javax.interceptor.InvocationContext;
  8.  
  9. import org.jboss.logging.Logger;
  10.  
  11. @Interceptor
  12. @Log
  13. public class LogInterceptor implements Serializable {
  14.  
  15.      private static final Logger LOGGER =
  16.             Logger.getLogger(LogInterceptor.class);
  17.      
  18.      @AroundInvoke
  19.      public Object logMethodEntry(InvocationContext ic) throws Exception {
  20.            LOGGER.info("Wywolana zostala metoda: " + ic.getMethod().getName());
  21.            return ic.proceed();
  22.      }
  23. }
  1. package pl.edu.java.cdi.managedBeans;
  2.  
  3. import javax.enterprise.context.RequestScoped;
  4. import javax.inject.Inject;
  5. import javax.inject.Named;
  6.  
  7. @Named
  8. @RequestScoped
  9. public class MojController {
  10.         @Log
  11.         public String getLog() {
  12.                 return "Metoda loggowana";
  13.         }      
  14. }
i należy do pliku beans.xml dodać:
<interceptors>
   <class>pl.edu.java.cdi.managedBeans.LogInterceptor</class>
</interceptors>
created by cv.java.org.pl © 2023 All Rights Reserved.